package cl.tinet.trainee.tarea6;

import java.io.Serializable;
import java.util.List;

/**
 * Interface para definir las firmas de acceso a la bd.
 * 
 * @author Jose Palma
 * 
 * @param <T>
 *            Clase serializable.
 */
public interface UsuarioDAOInterface<T extends Serializable> {
	/**
	 * Agrega el objetoT a la tabla.
	 * 
	 * @param objetoT
	 *            Objeto a ingregar.
	 */
	public void agregar(T objetoT);

	/**
	 * Actualiza el objetoT en la tabla.
	 * 
	 * @param objetoT
	 *            Objeto actualizado
	 */
	public void actualizar(T objetoT);

	/**
	 * Busca un tupla en la tabla.
	 * 
	 * @param objetoT
	 *            Objeto buscado.
	 * @return retorna el objeto en caso que exista o null en caso contrario.
	 */
	public T buscar(T objetoT);

	/**
	 * Busca las tuplas existentes en la tabla. Si usa "" o "*" busca todas las
	 * tuplas y si ingresa un nombre hace un filtro con el texto ingresado.
	 * 
	 * @param nombre
	 *            Filtro para realizar la busqueda.
	 * @return retorna la lista con las tuplas existentes o null si esta vacia.
	 */
	public List<T> buscarTodos(String nombre);

	/**
	 * Borra de la tabla el objetoT.
	 * 
	 * @param objetoT
	 *            Objeto a eliminar.
	 */
	public void borrar(T objetoT);

}
